package collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * list集合
 * @author cctv
 */
public class ListTest {
    public static void main(String[] args){
        // Java 集合类型分为：Collection 和 Map，Collection 子接口有：Set、Queue 和 List 等接口
        // List 接口的实现类有：ArrayList 和 LinkedList。ArrayList 是基于动态数组数据结构的实
        //现，LinkedList 是基于链表数据结构的实现。ArrayList 访问元素速优于 LinkedList，LinkedList
        //占用的内存空间比较大，但 LinkedList 在批量插入或删除数据时优于 ArrayList。
        // 不同的结构对应于不同的算法，有的考虑节省占用空间，有的考虑提高运行效率，对
        // 于程序员而言，它们就像是“熊掌”和“鱼肉”，不可兼得！提高运行速度往往是以牺牲
        // 空间为代价的，而节省占用空间往往是以牺牲运行速度为代价的。
//        提示 在Java中任何集合中存放的都是对象，即引用数据类型，基本数据类型不能放到集合中。整数1放到集合中，
//        这是因为这个过程中发生了自动装箱，整数1被封装成Integer对象1，然后再放入到集合中。相反从集合中取出的也是对象，
//        从集合中取出的是Integer对象，之所以能够赋值给int类型，是因为这个过程发生了自动拆箱
        List list = new ArrayList();
        list.add(1);
        list.add("A");
        int item = (int) list.get(0);
        ArrayList<Integer> a = new ArrayList<Integer>();
        a.add(1);
        int  b = a.get(0);
        // 3种遍历方法
        for (int i=0;i<list.size();i++){
            System.out.println("for读取集合元素"+list.get(i));
        }
        for (Object l:list) {
            System.out.println("foreach读取集合元素"+l);
        }
        Iterator it = list.iterator();
        while(it.hasNext()){
            Object s = it.next();
            System.out.println("用迭代器读取元素："+s);
        }




    }
}
